经典算法思路总结

1、n 从 1 开始,每个操作可以选择对 n 加 1,或者对 n 加倍。如果最后结果为 2013,最少 需要()个操作

https://www.nowcoder.com/questionTerminal/5e27998c3f854109905610cac8a5d802?pos=73&mutiTagIds=602&orderByHotValue=1

 

 

2、给定一个字符串,返回其最长有效括号子串的长度

      ①有效的括号字符串是指只包含小括号,不包含其他字符,且满足括号语法规则的字符串。例如‘(())’是有效的,‘((a))’、‘(()’、‘{()}’是无效的

        ②有效括号子串是指输入字符串中满足有效括号字符串规则的子串。例如‘()(()()’的有效括号子串包括‘()’和‘()()’,其最长的有效括号子串长度即为4.

while 1:
    try:
        s = input()
        j = len(s)
        maxlen = 0
        stack = []
        for i in range(j):
            if s[i]==')' and len(stack)!=0 and s[stack[-1]] == '(':
                tmp=stack.pop()
                if len(stack) == 0:
                    maxlen = i+1
                else:
                    maxlen = max(maxlen,i-stack[-1])
            else:
                stack.append(i)
        print(maxlen)
    except Exception as e:
        break

 

3、链表插入排序:

https://www.jianshu.com/p/8d93f4c86cfd

 

4、背包问题

 

5 二维有序矩阵找值

 -*- coding:utf-8 -*-
'''
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
'''
def search(array, num):
  # 参数合法性判断忽略
  i = 0
  j = len(array[0]) - 1
  max_i = len(array) - 1
  while i <= max_i and j >= 0:
    if array[i][j] == num:
      return True
    elif array[i][j] > num:
      j = j - 1
    else:
      i = i + 1
  return False
if __name__ == '__main__':
  a = [[1, 2, 8, 9],
     [2, 4, 9, 12],
     [4, 7, 10, 13],
     [6, 8, 11, 15],
     ]
  print search(a, 14)
  print search(a, 7)
  print search(a, 0)

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值